<?php if (!defined('BASEPATH'))  exit('No direct script acess allowed');

class Vendas extends TR_Controller {

    function __construct() {
        parent::__construct();
        $this->load->config('vendas');
        
         // Carrega a library de validacao
        $this->load->library('form_validation');
        
        
        $this->load->model(array(
            $this->config->item('area_admin') . '/venda_model',
            $this->config->item('area_admin') . '/cliente_model',
            $this->config->item('area_admin') . '/produto_model'
            
        ));
        
            
    }
       function index(){
        
        // Delega a acao a ser executada para o metodo all
        $this->all();
    }
    
    /**
     * Lista os registros cadastrados
     * 
     * @return void
     */
    function all(){
        
        
        $dados['vendas'] = $this->venda_model->get_all();
        
        $dados['titulo'] = 'Gerenciar Vendas';
        $dados['view']   = $this->config->item('area_admin') . '/vendas/index';
        
        $this->load->view($this->config->item('area_admin') . '/layout',$dados);
    }
    
    function cadastrar(){
        
        $dados['titulo'] = 'Cadastrar Vendas';
        $dados['view']   = $this->config->item('area_admin') . '/vendas/editar';
        $dados['js'][]   = 'plugins/jquery.validate';
        $dados['js'][]   = 'pages/editar_venda';
        
        $this->load->view($this->config->item('area_admin') . '/layout',$dados);
        
        
        
    }
    
    
    function editar($id){
        
        $dados['venda'] = $this->venda_model->get_by_id($id);
        
        
        $dados['titulo'] = 'Editar venda';
        $dados['view']   = $this->config->item('area_admin') . '/vendas/editar';
        $dados['js'][]   = 'plugins/jquery.validate';
        $dados['js'][]   = 'pages/editar_venda';
        
        $this->load->view($this->config->item('area_admin') . '/layout',$dados);
    }
    
    function salvar(){
        
        
        // Busca as regras de validacao nos arquivos de configuracao
        $regras = $this->config->item('regras_validacao');

        // Seta as regras na library de validacao
        $this->form_validation->set_rules($regras);

        // Seta o html das mensagens de validacao
        $this->form_validation->set_error_delimiters('<label class="error">', '</label>');

        $venda = new stdClass();
        
        $id = $this->input->post('id');
        
          
        $venda->cliente_id       = $this->input->post('cliente_id');
        $venda->forma_pagamento  = $this->input->post('forma_pagamento');
        $venda->observacoes      = $this->input->post('observacao');
        $venda->produtos         = $this->input->post('produto_id');
       
        
        $quantidade = $this->input->post('quantidade');
        
        
        
        $preco = $this->input->post('preco');
        
        for($i = 0; $i < sizeof($venda->produtos); $i++ ){
            
            $produto = array(
                
                'produto_id' => $venda->produtos[$i],
                'quantidade' => $quantidade[$venda->produtos[$i]],
                'valor_total'      => (($preco[$venda->produtos[$i]]) * ($quantidade[$venda->produtos[$i]])),
                
                
                
                );  
            $venda->produtos[$i] = $produto;
            
        }
        
     
        
        if ($this->form_validation->run() === FALSE) {

            // Caso os dados sejam invalidos exibe o formulario de validacao novamente

            $venda->id = $id;
            $dados['venda'] = $venda;
            $dados['titulo'] = 'Editar venda';
            $dados['view'] = $this->config->item('area_admin') . '/venda/editar';
            $dados['js'][] = 'plugins/jquery.validate';
            $dados['js'][] = 'pages/editar_venda';

            $this->load->view($this->config->item('area_admin') . '/layout', $dados);
        } else {
            
           
        
            if (empty($id)) {
                 
                // Caso nao seja informado o ID do registro a ser atualizado insere um novo
                $resultado = $this->venda_model->inserir($venda);
            } else {

                $venda->id = $id;
                $resultado = $this->venda_model->atualizar($venda);
                
            }

            // Captura o resultado da operacao e seta a mensagem a ser exibida para o usuario
            if ($resultado) {

                if (empty($id)) {

                    $mensagem = array('msg' => 'insert-ok', 'tipo' => 'success');
                } else {

                    $mensagem = array('msg' => 'update-ok', 'tipo' => 'info');
                }
            } else {
                $mensagem = array('msg' => 'erro', 'tipo' => 'danger');
            }

            // Grava a mensagem numa flashdata
            $this->session->set_flashdata('msg', $mensagem);

            // Redireciona o usuario para a tela de gerenciamento
            redirect($this->config->item('area_admin') . '/vendas', 'refresh');
        }
        
    }
    function busca_cliente(){
        
        $nome = $this->input->post('nome');
        
        $clientes = $this->cliente_model->get_by_nome($nome);
        
        echo json_encode($clientes);
    }
    
    function busca_produto(){
        
        $nome = $this->input->post('nome');
        
        $produtos = $this->produto_model->get_by_nome($nome);
        
        echo json_encode($produtos);
    }
    
    function remover($id) {

        // informa o banco de dados qual registro deve ser removido
        $resultado = $this->venda_model->remover($id);

        // Captura o resultado da operacao
        if ($resultado) {

            $mensagem = array('msg' => 'delete-ok', 'tipo' => 'success');
        } else {
            $mensagem = array('msg' => 'erro', 'tipo' => 'danger');
        }

        // Seta a mensagem numa flashdata
        $this->session->set_flashdata('msg', $mensagem);

        //Redireciona para a tela de gerenciamento
        redirect($this->config->item('area_admin') . '/vendas', 'refresh');
    }
    function insere_item(){
        
        $produto_id = $this->input->post('produto_id');
        
        $produto = $this->produto_model->get_by_id($produto_id);
        
        
        echo json_encode($produto);
        
    }

}
